<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class RegistrarInst extends CI_Controller {

    public function index() {
        exit("No tiene los suficientes permisos");
    }

    public function persona($programaId) {
        $this->valida();
        if ($this->validaPermiso($programaId)) {
            switch ($programaId) {
                case '3': //Registra personas
                    $ind = "instReg";
                    $this->load->model("registro_model", "registros", TRUE);
                    $dep = $this->registros->buscaDepartamento();
                    $aca = $this->registros->buscaAcademico();
                    $this->load->model("maestras_model", "maestras", TRUE);
                    $transaccion = $this->maestras->transaccion();
                    $instituciones = $this->maestras->instituciones();
                    $this->load->view('registroPersona_view', array('dep' => $dep, 'ind' => $ind, 'aca' => $aca, 'transa' => $transaccion, 'programaId' => $programaId, "instituciones" => $instituciones));
                    break;
            }
        }
    }

    public function cargaTemporal($opc, $transa, $val) {
        $this->load->model("maestras_model", "maestras", TRUE);
        $this->maestras->cargaTemporal($opc, $transa, $val);
    }

    public function limpiaTemporal($transa) {
        $this->load->model("maestras_model", "maestras", TRUE);
        $this->maestras->limpiaTemporal($transa);
    }

    private function validaPermiso($permiso) {
        $this->load->model("validacion_model", "valida", TRUE);
        if ($this->valida->permiso($permiso, $this->session->userdata('rolId')) == "Si")
            return true;
        else
            return false;
    }

    public function guardaPersona($programaId, $accion = null) {
        $this->valida();
        $this->load->model("registro_model", "guardar", TRUE);
        $this->load->model("registrarinst_model", "institucion", TRUE);
        $this->load->model("maestras_model", "maestras", TRUE);
        $result = $this->guardar->guarda('4', $accion);
        switch ($result) {
            case "0":
                $mensaje = "El usuario(e-mail): '{$this->input->post('email')}' ya existe. No se han guardado los cambios";
                break;
            case "1":
                $tmp = ($this->input->post('tipDoc')) ? $this->input->post('tipDoc') : "";
                $query = $this->maestras->buscaMaestras($titulo, array('nit' => $this->input->post('nit'), 'tip' => $tmp), '2');
                $username = $query->result();
                $mensaje = "La Persona con Documento '{$this->input->post('nit')}' ya existe con el usuario '{$username[0]->usuario}'.";
                break;
            default:
                //Se optine el id de la persona que guardo
                $result = explode("|", $result);
                $mentpm = ($accion == "") ? "registrado" : "editado";
                $mensaje = "Ha registrado satisfactoriamente a la persona, si ésta desea ingresar al sistema puede hacerlo con el e-mail y la contraseña que usted suministro";
                $insti = $this->maestras->nombreUsuario($this->session->userdata('rolId'), $this->session->userdata('usuarioId'));
                $insti = explode("|", $insti);
                $this->institucion->personaInsti($insti[1], $result[1]);
                break;
        }
        echo "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /><script>alert(\"" . $mensaje . "\"); window.location = '" . site_url("registrarInst/persona/$programaId") . "';</script></head><html>";
    }

    public function consultaLab($programaId) {
        $this->valida();
        if ($this->validaPermiso($programaId)) {
            $this->load->model("maestras_model", "maestras", TRUE);
            if (($this->maestras->cuenServInclu($this->session->userdata("tablaUsuarioId")) > 0) || ($this->session->userdata("rolId") != "3"))
                $this->load->view("consOferLab_view");
            else
                echo "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /><script>alert(\"Debe registrar minimo un servicio para poder consultar ofertas laborales \"); </script></head><html>";
        }
        return;
    }

    public function consultaAse($programaId) {
        $this->valida();
        if ($this->validaPermiso($programaId)) {
            $this->load->view("consAsesoria_view");
        }
    }

//fin public function consultaAse($programaId){

    public function valida() { //funcion para validar que aún esta activo en el sistema
        if (!$this->session->userdata('usuarioId')) {
            echo "<script>alert(\"Su session a expirado\"); parent.location = '" . site_url("inicio/index/") . "';</script>";
            exit();
            return;
        }
        return true;
    }

    public function postular($opc, $oferta = null, $tran = null, $tran1 = null) {
        $this->valida();
        $this->load->model("maestras_model", "maestras", TRUE);
        $this->load->model("registro_model", "registros", TRUE);
        $this->load->model("oferta_model", "ofertaMod", TRUE);
        if ($opc == "RET") {
            $this->maestras->limpiaTemporal($tran);
        }
        $oferta = ($opc == 'CONSULTA') ? "SOLOCONSULTA" : $oferta;
        $parametros = array();
        $parametros["rolId"] = $this->session->userdata("rolId");
        switch ($this->session->userdata('rolId')) {
            case '3': //institucion
                $parametros["disca"] = $this->maestras->tipDiscapacidad();
                $parametros["infOfer"] = $this->ofertaMod->extraInfoOferta($oferta);
                $parametros["servInsti"] = $this->ofertaMod->extraServIncluInsti($this->session->userdata("tablaUsuarioId"));
                $parametros["servInstiOfrecidos"] = $this->ofertaMod->extraServIncluInstiOfrecidos($oferta);
                $parametros["oferta"] = $oferta;
                $parametros["noMax"] = 'no';
                $parametros["instiAfiliado"] = (isset($oferta)) ? 'No' : 'Si';
                $parametros["transaccion"] = ($tran1 != "") ? $tran1 : $this->maestras->transaccion();
                $this->load->view("consPersonal_view", $parametros);
                break;
            case '1': //Administrador
                $this->load->model("administra_model", "administra", TRUE);
                $parametros["disca"] = $this->maestras->tipDiscapacidad();
                $parametros["infOfer"] = $this->ofertaMod->extraInfoOferta($oferta);
                $parametros["servInsti"] = $this->ofertaMod->extraServIncluInsti($this->session->userdata("tablaUsuarioId"));
                $parametros["servInstiOfrecidos"] = $this->ofertaMod->extraServIncluInstiOfrecidos($oferta);
                $parametros["oferta"] = $oferta;
                $parametros["noMax"] = 'no';
                $parametros["transaccion"] = ($tran1 != "") ? $tran1 : $this->maestras->transaccion();
                $parametros["dep"] = $this->registros->buscaDepartamento();
                $parametros["aca"] = $this->registros->buscaAcademico();
                $parametros["forma"] = $this->maestras->tipFormacion();
                $parametros["clases"] = $this->maestras->tipAyudasTecnicas('C');
                $parametros["tipos"] = $this->maestras->tipAdministradoras();
                $parametros["instituciones"] = $this->administra->totInstituciones();
                $this->load->view("consPersonal_view", $parametros);
                break;
        }
    }

    public function consPersonal($opc, $trans) {
        $this->valida();
        /*
         * $opc = Accion(CON-Consulta,RET->Muestra)
         * $trans = Transacción
         */
        switch ($opc) {
            case 'CON':
                $this->load->model("maestras_model", "maestras", TRUE);
                $this->load->model("registrarinst_model", "institucion", TRUE);
                $this->maestras->limpiaTemporal($trans);
                if ($this->session->userdata("rolId") == "1")
                    $instiId = ($this->input->post("institucion")) ? " and perIns.`institucionId` = '{$this->input->post("institucion")}'" : "";
                else
                    $instiId = " and perIns.`institucionId` = '{$this->session->userdata("tablaUsuarioId")}'";
                $this->institucion->cargaTemp($trans, $instiId);
                return true;
                break;
        }
    }

//fin public function consPersonal($opc, $trans) {

    public function verEmp($tran, $oferta, $personasId, $desdeInsti = null) {
        /* Función para mostar la información de una persona como consulta o para edición */
        $this->valida();
        $this->load->model("maestras_model", "maestras", TRUE);
        $this->load->model("registro_model", "registros", TRUE);
        $resultado = array();
        $resultado["dep"] = $this->registros->buscaDepartamento();
        $resultado["ind"] = 'UNCONSULTA';
        $resultado["aca"] = $this->registros->buscaAcademico();
        $resultado["transa"] = $this->maestras->transaccion();
        $resultado["trans1"] = $resultado["transa"];
        $resultado["dataPersona"] = $this->maestras->extraeMaestras('personas', 'tableId', $personasId, $resultado["transa"]);
        $resultado["rolEdita"] = "EDITA";
        $resultado["oferta"] = $oferta;
        $resultado["instituciones"] = $this->maestras->instituciones();
        $resultado["permiteEdicion"] = $desdeInsti;
        $this->load->view('registroPersona_view', $resultado);
        return;
    }

//fin public function verEmp($tran, $oferta, $personasId,$desdeInsti = null) {

    public function consulta($ofer) {
        $this->valida();
        $ofer = urldecode($ofer);
        $this->load->view('consPostulados_view', array('oferta' => $ofer));
    }

    public function verEmpresa($sol, $opc = null) {
        $this->valida();
        $this->load->model("registro_model", "registros", TRUE);
        $this->load->model("maestras_model", "maestras", TRUE);
        if ($opc != 'conID')
            $empresa = $this->maestras->extraeMaestras('empresasdeSol', 'tableId', $sol);
        else
            $empresa = $this->maestras->extraeMaestras('empresas', 'tableId', $sol);
        $dep = $this->registros->buscaDepartamento();
        $sectores = $this->registros->buscaSectores();
        $this->load->view('registroEmpresa_view', array('sector' => $sectores, 'dep' => $dep, 'ind' => 'SOLOCONSULTA', 'dataEmpresas' => $empresa, 'rolEdita' => 'EDITA'));
    }

    public function postuServi() {
        $this->valida();
        $this->load->model("registrarinst_model", "institucion", TRUE);
        $resultado = $this->institucion->postulaServicios($this->session->userdata("rolId"), $this->input->post("soli"), $this->session->userdata("tablaUsuarioId"));
        if ($resultado["result"] == 1) {
            echo "Ya se ha postulado para este Servicio ó Asesoría";
        } else {
            $this->envia($resultado["correoEmpresa"], "La institución {$resultado["institucion"]} se ha postulado al servicio {$resultado["solicitud"]} que usted ha públicado", "M", "Postulaciones PACTO-SI");
            echo "Se ha postulado correctamente";
        }
        return;
    } //fin public function postuServi() {

    private function envia($mail, $val, $opc, $subject = null) {
        /* Función para enviar correos desde el sistema */
        $this->load->library('email');
        $config['protocol'] = 'smtp';
        $config['smtp_host'] = 'ssl://smtp.gmail.com';
        $config['smtp_port'] = 465;
        $config['smtp_user'] = 'contacto@pactodeproductividad.com';
        $config['smtp_pass'] = 'contacto123';
        $this->email->initialize($config);
        switch ($opc) {
            case 'M':
                $this->email->set_newline("\r\n");
                $this->email->from('no-reply@pactoproductivo.org', 'PACTO-SI');
                $this->email->to($mail);
                $this->email->subject(utf8_decode($subject));
                $this->email->message(utf8_decode($val));
                $this->email->send();
                break;
            default:
                $this->email->set_newline("\r\n");
                $this->email->from('no-reply@pactoproductivo.org', 'PACTO-SI');
                $this->email->to($mail);
                $this->email->subject(utf8_decode('Recuperación de Contraseña'));
                $this->email->message(utf8_decode('Se le ha asignado ésta nueva contraseña: ' . $val . '. Debido a su soclicitud de recuperación de contraseña.'));
                $this->email->send();
                break;
        }
    }

//fin private function envia($mail, $val, $opc, $subject = null) {


    public function sigueOferta($programaId) {
        $this->valida();
        if ($this->validaPermiso($programaId)) {
            $this->load->view("sigueOfertaLaboral_view");
        }
    }

    public function sigue($contra, $opc = null) {
        $this->valida();
        $this->load->view("siguePersonal_view", ARRAY('contra' => $contra, "opc" => $opc));
    }

    public function regSeguimiento() {
        $this->load->model("registrarinst_model", "institucion", TRUE);
        return $this->institucion->guardaSeguimiento();
    }

    public function sigueSol($programaId) {
        $this->valida();
        if ($this->validaPermiso($programaId)) {
            $this->load->view("sigueSolicitud_view");
        }
    }

    public function expPersoExcel($transaccion) {
        $this->load->model("registrarinst_model", "institucion", TRUE);
        header("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
        header("Cache-Control: no-cache, must-revalidate");
        header("Pragma: no-cache");
        header("Content-Type: application/vnd.ms-excel");
        header("Content-Disposition: attachment; filename=personas.xls");
        $this->institucion->expPersoExcel($transaccion);
    }

    public function personalContra($programaId) {
        $this->valida();
        if ($this->validaPermiso($programaId)) {
            $this->load->view('estaPersonalContra_view');
        }
        return;
    }

    public function llamaEstPersContra($opc = "perContra", $empresaId = null) {
        $this->valida();
        $this->load->model("registrarinst_model", "institucion", TRUE);
        switch ($opc) {
            case "perContra":
                $titulo = "TOTAL ASOCIADOS: ";
                if ($this->session->userdata("rolId") == "1")
                    $empresaId = ($empresaId) ? $empresaId : "";
                else
                    $empresaId = $this->session->userdata("tablaUsuarioId");
                $estadistica = $this->institucion->estaPersonalContra($empresaId);
                break;
            case "ofertas":
                $titulo = "TOTAL POSTULACIONES : ";
                if ($this->session->userdata("rolId") == "1")
                    $empresaId = ($empresaId) ? $empresaId : "";
                else
                    $empresaId = $this->session->userdata("tablaUsuarioId");
                $estadistica = $this->institucion->estaPostulados($empresaId, $this->input->post("fecIni"), $this->input->post("fecFin"));
                break;
        }

        /* @var $estadistica type */
        $this->load->view('llamaEstadistica_view', array('estadistica' => $estadistica, "titulo" => $titulo));
        return;
    }

    public function abreDetalle($opc) {
        $this->valida();
        $this->load->model("registro_empresa_model", "regEmpresa", TRUE);
        switch ($opc) {
            case "Asociados_Desempleados":
                $query = $this->regEmpresa->obtResult($this->session->userdata("sqlUno"));
                break;
            case "Asociados_Empleados":
                $query = $this->regEmpresa->obtResult($this->session->userdata("sqlDos"));
                break;
            case "Postulados_Contratados":
                $query = $this->regEmpresa->obtResult($this->session->userdata("sqlUno"));
                break;
            case "Postulados_no_Contratados":
                $query = $this->regEmpresa->obtResult($this->session->userdata("sqlDos"));
                break;
        }
        $this->load->view("resumenHistorial_view", array("query" => $query, "opc" => $opc));
    }

    public function postRealizadas($programaId) {
        $this->valida();
        if ($this->validaPermiso($programaId)) {
            $this->load->view('postRealizadas_view');
        }
        return;
    }

    public function repXciudad($programaId) {
        $this->valida();
        $this->load->model("registro_model", "registros", TRUE);
        $dep = $this->registros->buscaDepartamento();
        if ($this->validaPermiso($programaId))
            $this->load->view('estaXciudad_view', array("dep" => $dep));
        return;
    }

    public function llamaEstBarras($opc) {
        $this->valida();
        $this->load->model("estadisticas_model", "estadistica", TRUE);
        switch ($opc) {
            case "ciudad":
                if ($this->session->userdata("rolId") == "1")
                    $institucionId = ($this->input->post("instituicon") != "undefined") ? $this->input->post("instituicon") : "";
                else
                    $institucionId = $this->session->userdata("tablaUsuarioId");
                $estadistica = $this->estadistica->estaCiudadOfer($institucionId);
                $contratados = array_pop($estadistica);
                $postulados = array_pop($estadistica);
                $this->load->view('llamaBarras_view', array("titulo" => "Total Postulaciones Realizadas", "contratados" => $contratados, "postulados" => $postulados));
                break;
        }
    }

    public function postuContra($permiso) {
        /* Función para desplegar el frente donde se contrataran las personas para las ofertas laborales que la empresa acepto como postulacion la institución */
        $this->valida();
        $parametros = array();
        $this->load->view("postPreselect_view", $parametros);
        return;
    }

//fin public function postuContra($permiso){

    public function preseleccion($preseleInstId) {
        /* Muestra todos los preseleccionados por la institución para la oferta laboral especifica */
        $this->valida();
        $parametros = array();
        $parametros["preseleInstId"] = $preseleInstId;
        $this->load->view("enviaContrata_view", $parametros);
    }

//fin public function preseleccion($preseleInstId){

    public function enviaContrato() {
        /* Maneja las personas que envia para la contratacion */
        $this->load->model("registrarinst_model", "institucion", TRUE);
        $mensaje = array();
        $tmp = $this->institucion->enviaContrato($this->input->POST("personas"), $this->input->POST("presId"));
        switch ($tmp) {
            case "1":
                $mensaje["texto"] = "Se han realizado los cambios correctamente";
                break;
            case "2":
                $mensaje["texto"] = "El número de postulados es superior al de vacantes para la oferta laboral";
                break;
        }
        echo json_encode($mensaje);
    }

//fin public function enviaContrato(){

    public function conCiudadServ($programaId) {
        /* Ventana de consulta para los servicios de inclusión de la misma ciudad de la empresa */
        $this->valida();
        $parametros = array();
        if ($this->validaPermiso($programaId)) {
            $this->load->model("registro_model", "registros", TRUE);
            $parametros["serviciosInclu"] = $this->registros->getServInclu();
            $this->load->view("consAsesoriaCiudad_view", $parametros);
        }
    }

//fin public function conCiudadServ($programaId){
}
